const fse = require('fs-extra');
const path = require('path');
const schedule = require('node-schedule');
// 大文件存储目录
const UPLOAD_DIR = path.resolve(__dirname, '..', 'target');

// 空目录删除
function remove(file, stats) {
  const now = new Date().getTime();
  const offset = now - stats.ctimeMs;
  if (offset > 1000 * 60) {
    // 大于60秒的碎片
    fse.unlinkSync(file);
    console.log(file, '文件以过期，删除完毕');
  }
}

async function scan(dir, callback) {
  const files = fse.readdirSync(dir);
  files.forEach((filename) => {
    const fileDir = path.resolve(dir, filename);
    const stats = fse.statSync(fileDir);
    if (stats.isDirectory()) {
      // 删除文件
      scan(fileDir, remove);
      // 删除空的文件夹
      if (fse.readdirSync(fileDir).length == 0) {
        fse.rmdirSync(fileDir);
      }
      return;
    }
    if (callback) {
      callback(fileDir, stats);
    }
  });
}

// * * * * * *
// ┬ ┬ ┬ ┬ ┬ ┬
// │ │ │ │ │ │
// │ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
// │ │ │ │ └───── month (1 - 12)
// │ │ │ └────────── day of month (1 - 31)
// │ │ └─────────────── hour (0 - 23)
// │ └──────────────────── minute (0 - 59)
// └───────────────────────── second (0 - 59, OPTIONAL)
let start = function () {
  // 每5秒
  schedule.scheduleJob('*/5 * * * * *', function () {
    console.log('定时清理chunks开始');
    scan(UPLOAD_DIR);
  });
};

start();
